﻿using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Data;
using System.Linq;
using System.Text;

namespace ShareOsNetLib
{
	public class SosType
	{
		SosType()
		{
			IsGeneric = false;
		}
		[Key]
		public UInt32 UID { get; set; }
		public Guid GUID { get; set; }
		public Guid PreviousVersion { get; set; }
		public SosType? BaseType { get; set; }
		public string VersionString { get; set; }
		[StringLength(255)]
		public new string DefaultName { get; set; }		// Default universal full name of the this type
		public SosType? ElementType { get; set; }		// If the type is an array, pointer or reference
		[Required]
		public bool IsGeneric { get; set; }
		public bool IsEnum { get; set; }
		public virtual ICollection<SosParameter> GenericParameters { get; set; }	// Generic Type Parameters
		public virtual ICollection<SosParameter> Fields { get; set; }				// Fields
	}
}
